#ifndef BILIST_H__
#define BILIST_H__

/*定义插入方式
 *@HEAD_CUR:头插法
 *@END_CUR:尾插法
 *@ORDER_CUR:顺序插入
 *
 */
enum CUR_MODE
{
	HEAD_CUR = 1,
	END_CUR,
	ORDER_CUR
};

//定义结构体类型
typedef int Datatype;

typedef struct bilist_st
{	
	Datatype data;
	struct bilist_st *prev;
	struct bilist_st *next;
}bilist_st;

typedef struct Head_st
{
	struct bilist_st *first;
	struct bilist_st *last;
	int number;
}Head_st;


//创建头结点
int bilist_create_head(Head_st **);
//创建链表
int bilist_create_list(Head_st **,enum CUR_MODE);
//三种插入方式
int bilist_insert_head(Head_st **,bilist_st *);

int bilist_insert_end(Head_st **,bilist_st *);

int bilist_insert_order(Head_st **,bilist_st *);
//查找函数
bilist_st *bilist_find(Head_st *,const Datatype);
//删除函数
void bilist_delete(Head_st **,const Datatype);
//打印函数
void bilist_display(Head_st *);
//销毁函数
void bilist_distory(Head_st *);

#endif
